我們透過畢安api得到彼特畢歷史價格數據,將數據儲存到CSV檔案。
透過這個下列函數,我們選用BTCUSDT當作要查看的幣種,並將時間以"一天"為單位,還有其他可用的時間單位可作為查詢。
# valid intervals - 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
client._get_earliest_valid_timestamp('BTCUSDT', '1d')
接下來,我們調用歷史數據。我們需要再次通過符號和變數。此外,還需要開始日期,為此我們使用了時間戳變數。
最後,預設情況下,此函數調用最後 500 個數據點。最大值為 1000,因此我們將限制增加到最大值。
在後台,此終端節點將在迴圈中連續查詢 API,一次收集 1000 個價位,直到返回從起點到今天的所有數據。
bars = client.get_historical_klines('BTCUSDT', '1d', timestamp, limit=1000)
這是根據文件上返回的數據定義
我們利用了它,只保存了前五列:日期,開盤,高,低,關閉。
或者,如果您不需要其他列,也可以將其刪除,如下所示:
for line in bars:
del line[5:]
最後我們把資料存到csv裡面。
日期列已設置為索引,使其成為時間序列索引數據幀。這樣,以後可以更輕鬆地根據時間範圍進行操作。
btc_df = pd.DataFrame(bars, columns=['date', 'open', 'high', 'low', 'close'])
btc_df.set_index(['date'], inplace=True)
print(btc_df.head())
btc_df.to_csv('binance_demo.csv')
這邊附上完整的程式碼
import os
import csv
from binance.client import Client
api_key = os.environ.get('binance_api')
api_secret = os.environ.get('binance_secret')
client = Client(api_key, api_secret)
# valid intervals - 1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M
timestamp = client._get_earliest_valid_timestamp('BTCUSDT', '1d')
bars = client.get_historical_klines('BTCUSDT', '1d', timestamp, limit=500)
with open('binance_demo.csv', 'w', newline='') as f:
for line in bars:
del line[5:]
btc_df = pd.DataFrame(bars, columns=['date', 'open', 'high', 'low', 'close'])
btc_df.set_index(['date'], inplace=True)
print(btc_df.head())
btc_df.to_csv('binance_demo.csv')
這是寫入csv檔的結果。
如果對於其他函示有興趣的可以參考這篇